# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.1046.1.350 -> 1.1046.1.351 # drivers/acpi/tables.c 1.14 -> 1.15 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 03/08/07 mochel@osdl.org 1.1119.1.11 # Merge kernel.bkbits.net:linux-2.5-power # into osdl.org:/home/mochel/src/kernel/devel/linux-2.5-power # -------------------------------------------- # 03/08/07 achirica@telefonica.net 1.1119.6.9 # [netdrvr airo] safer unload code # -------------------------------------------- # 03/08/07 achirica@telefonica.net 1.1119.6.10 # [netdrvr airo] Fix adhoc config # -------------------------------------------- # 03/08/07 jgarzik@redhat.com 1.1119.6.11 # [netdrvr airo] now that it builds, re-enable wireless_ext # -------------------------------------------- # 03/08/07 torvalds@home.osdl.org 1.1119.5.43 # Merge with DRI CVS tree: fix use-after-free bug in DRM(takedown) # -------------------------------------------- # 03/08/07 davidm@tiger.hpl.hp.com 1.1046.1.351 # tables.c: # Check for X__DSDT in acpi_get_table_header_early() # -------------------------------------------- # diff -Nru a/drivers/acpi/tables.c b/drivers/acpi/tables.c --- a/drivers/acpi/tables.c Mon Sep 22 13:02:06 2003 +++ b/drivers/acpi/tables.c Mon Sep 22 13:02:06 2003 @@ -256,10 +256,17 @@ /* Map the DSDT header via the pointer in the FADT */ if (id == ACPI_DSDT) { - struct acpi_table_fadt *fadt = (struct acpi_table_fadt *) *header; + struct fadt_descriptor_rev2 *fadt = (struct fadt_descriptor_rev2 *) *header; + + if (fadt->header.revision == 3 && fadt->Xdsdt) { + *header = (void *) __acpi_map_table(fadt->Xdsdt, + sizeof(struct acpi_table_header)); + } else if (fadt->V1_dsdt) { + *header = (void *) __acpi_map_table(fadt->V1_dsdt, + sizeof(struct acpi_table_header)); + } else + *header = 0; - *header = (void *) __acpi_map_table(fadt->dsdt_addr, - sizeof(struct acpi_table_header)); if (!*header) { printk(KERN_WARNING PREFIX "Unable to map DSDT\n"); return -ENODEV;